/**
 * @Project : algorithm-learning
 * @Author : Ruoyu Wang
 * @User : Momenta
 * @DateTime : 2024/3/17 17:59
 */

//小美拿到了一个由正整数组成的数组，但其中有一些元素是未知的(用0来表示)。
//现在小美想知道，如果那些未知的元素在区间[l,r]范围内随机取值的话，数组所有元素之和的最小值和最大值分别是多少？
//共有q次询问。
//
//输入描述
//  第一行输入两个正整数n,q，代来数组大小和询问次数。
//  第二行输入n个整数ai，其中如果输入的ai为0，那么说明ai是未知的。
//  接下来的q行，每行输入两个正整数l,r，代表一次询问。
//  1≤ n,q ≤10^5
//  0≤ ai ≤10^9
//  1≤ l ≤ r≤10^9
//输出描述
//输出q行，每行输出两个正整数，代表所有元素之和的最小值和最大值。
//
//示例1
//输入
//3 2
//1 0 3
//1 2
//4 4
//输出
//5 6
//8 8
//说明
//  只有第二个元素是未知的。
//  第一次询问，数组最小的和是1+1+3=5，最大的和是1+2+3=6。
//  第二次询问，显然数组的元素和必然为8。

#include <iostream>

using namespace std;

int main() {
    int n, q;
    scanf("%d%d", &n, &q);

    long long sum = 0;
    long long cnt = 0;
    for (int i = 0; i < n; ++i) {
        int tmp;
        scanf("%d", &tmp);
        if (tmp == 0) cnt++;
        else sum += tmp;
    }

    while (q--) {
        int l, r;
        scanf("%d%d", &l, &r);
        printf("%lld %lld\n", sum + cnt * l, sum + cnt * r);
    }

    return 0;
}